package com.ak.game.entity;

import com.ak.game.entity.vo.BetReqVo;
import io.netty.channel.ChannelHandlerContext;
import org.springframework.stereotype.Component;

import java.util.HashMap;
import java.util.Map;

/**
 * 下注记录类
 */
@Component
public class BettingRecord {

    /**
     * 使用ConcurrentLinkedQueue来保存下注信息，确保线程安全
     */
    public static Map<BetReqVo, ChannelHandlerContext> bets1 = new HashMap<>();

    /**
     * 使用ConcurrentLinkedQueue来保存下注信息，确保线程安全
     */
    public static Map<BetReqVo, ChannelHandlerContext> bets3 = new HashMap<>();

    /**
     * 使用ConcurrentLinkedQueue来保存下注信息，确保线程安全
     */
    public static Map<BetReqVo, ChannelHandlerContext> bets5 = new HashMap<>();

    /**
     * 使用ConcurrentLinkedQueue来保存下注信息，确保线程安全
     */
    public static Map<BetReqVo, ChannelHandlerContext> bets10 = new HashMap<>();



    /**
     * 异步下注方法
     *
     * @param betReqVo 下注请求vo
     * @param ctx      某一个用户通道代理上下文
     */
    public void placeBet1(BetReqVo betReqVo, ChannelHandlerContext ctx) {
        bets1.put(betReqVo, ctx); // 将新的投注添加到队列中
    }

    /**
     * 异步下注方法
     *
     * @param betReqVo 下注请求vo
     * @param ctx      某一个用户通道代理上下文
     */
    public void placeBet3(BetReqVo betReqVo, ChannelHandlerContext ctx) {
        bets3.put(betReqVo, ctx); // 将新的投注添加到队列中
    }

    /**
     * 异步下注方法
     *
     * @param betReqVo 下注请求vo
     * @param ctx      某一个用户通道代理上下文
     */
    public void placeBet5(BetReqVo betReqVo, ChannelHandlerContext ctx) {
        bets5.put(betReqVo, ctx); // 将新的投注添加到队列中
    }

    /**
     * 异步下注方法
     *
     * @param betReqVo 下注请求vo
     * @param ctx      某一个用户通道代理上下文
     */
    public void placeBet10(BetReqVo betReqVo, ChannelHandlerContext ctx) {
        bets10.put(betReqVo, ctx); // 将新的投注添加到队列中
    }

    /**
     * 获取所有下注信息
     *
     * @return ConcurrentLinkedQueue<BetReqVo> 保存下注信息的队列
     */
    public Map<BetReqVo, ChannelHandlerContext> getBets1() {
        return bets1;
    }

    /**
     * 获取所有下注信息
     *
     * @return ConcurrentLinkedQueue<BetReqVo> 保存下注信息的队列
     */
    public Map<BetReqVo, ChannelHandlerContext> getBets3() {
        return bets3;
    }

    /**
     * 获取所有下注信息
     *
     * @return ConcurrentLinkedQueue<BetReqVo> 保存下注信息的队列
     */
    public Map<BetReqVo, ChannelHandlerContext> getBets5() {
        return bets5;
    }

    /**
     * 获取所有下注信息
     *
     * @return ConcurrentLinkedQueue<BetReqVo> 保存下注信息的队列
     */
    public Map<BetReqVo, ChannelHandlerContext> getBets10() {
        return bets10;
    }
}